home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / tcp_ip / os2 / pmnos11s / calldbd.c < prev    next >
C/C++ Source or Header  |  1993-07-30  |  2KB  |  122 lines

  1. /* Callbook server */
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include "global.h"
  5. #include "files.h"
  6. #include "mbuf.h"
  7. #include "socket.h"
  8. #include "session.h"
  9. #include "proc.h"
  10. #include "dirutil.h"
  11. #include "commands.h"
  12. #include "mailbox.h"
  13. #include "config.h"
  14.  
  15. extern char *Callserver;  /* buckbook.c */
  16.  
  17. static int Scallbook = -1;    /* Prototype socket for service */
  18.  
  19. static void calldbd __ARGS((int s,void *unused,void *p));
  20.  
  21. int cb_lookup(int s,char *call);  /* in buckbook.c  */
  22.  
  23.  
  24. /* Start up callsign database service */
  25. int
  26. cdbstart(argc,argv,p)
  27. int argc;
  28. char *argv[];
  29. void *p;
  30. {
  31.     struct sockaddr_in lsocket;
  32.     int s;
  33.  
  34.     if(Scallbook != -1){
  35.         return 0;
  36.     }
  37.     psignal(Curproc,0);    /* Don't keep the parser waiting */
  38.     chname(Curproc,"Callbook listener");
  39.  
  40.     lsocket.sin_family = AF_INET;
  41.     lsocket.sin_addr.s_addr = INADDR_ANY;
  42.     if(argc < 2)
  43.         lsocket.sin_port = IPPORT_CALLDB;
  44.     else
  45.         lsocket.sin_port = atoi(argv[1]);
  46.  
  47.     Scallbook = socket(AF_INET,SOCK_STREAM,0);
  48.     bind(Scallbook,(char *)&lsocket,sizeof(lsocket));
  49.     listen(Scallbook,1);
  50.     for(;;){
  51.         if((s = accept(Scallbook,NULLCHAR,(int *)NULL)) == -1)
  52.             break;    /* Service is shutting down */
  53.  
  54.         /* Spawn a server */
  55.         newproc("calldbd",1024,calldbd,s,NULL,NULL,0);
  56.     }
  57.     return 0;
  58. }
  59. static void
  60. calldbd(s,unused,p)
  61. int s;
  62. void *unused;
  63. void *p;
  64. {
  65.     char user[80];
  66.     FILE *fp;
  67.     char *file,*cp;
  68.  
  69.     sockmode(s,SOCK_ASCII);
  70.     sockowner(s,Curproc);
  71.     recvline(s,user,80);
  72.     rip(user);
  73.   log(s,"Callbook lookup: %s",user);
  74.   if(strlen(user) == 0)
  75.     {
  76.             usprintf(s,"No Callbook information available\n");
  77.     }
  78.     else 
  79.     {
  80.         cb_lookup(s,user);
  81.     }
  82.     close_s(s);
  83. /*   log(s,"close Callbook"); */
  84. }
  85. int
  86. cdb0(argc,argv,p)
  87. int argc;
  88. char *argv[];
  89. void *p;
  90. {
  91.     close_s(Scallbook);
  92.     Scallbook = -1;
  93.     return 0;
  94. }
  95. /* This routine has been expanded upon, and is now located in buckbook.c
  96.   - kb7yw Mon  01-27-1992
  97.  
  98. int
  99. docallserver(argc,argv,p)
  100. int argc;
  101. char *argv[];
  102. void *p;
  103. {
  104.     if(argc < 2)
  105.     {
  106.         if(Callserver != NULLCHAR)
  107.       tprintf("The callserver's host name is: %s\n",Callserver);
  108.         else
  109.         {
  110.             tprintf("Callserver not configured!\n");
  111.             tprintf("Usage: callserver hostname OR callserver ip_address\n");
  112.         }
  113.     }
  114.     else {
  115.         if(Callserver != NULLCHAR)
  116.             free(Callserver);
  117.         Callserver = strdup(argv[1]);
  118.     }
  119.     return 0;
  120. }
  121. */
  122.